package com.wuliupai.delivery.wuliupaidelivery.utils;

import android.content.Context;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.nostra13.universalimageloader.utils.StorageUtils;
import com.wuliupai.delivery.wuliupaidelivery.R;

import java.io.File;

/**
 * ImageLoader工具类
 */
public class ImageLoaderUtils {
    /**
     * 设置图片缓存的目录
     */
    public static void setImageLoaderCache(Context context) {
        File cacheDir = StorageUtils.getOwnCacheDirectory(context, FileUtils.APP_FILE_PATH + "imageloader");
        // 配置ImageLoaderConfiguration
        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context)
                .discCache(new UnlimitedDiskCache(cacheDir))
                .threadPoolSize(3)
                .discCacheFileNameGenerator(new Md5FileNameGenerator())
                .writeDebugLogs()
                .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))// 内存缓存
                .build();
        ImageLoader.getInstance().init(configuration);// 全局初始化此配置
    }

    /**
     * 加载图片
     *
     * @param context           Context
     * @param roundCornerRadius 圆角的半径(单位px)
     *                          如果为0，则无圆角
     * @param defaultImageResId 加载出错时显示的图片
     * @return DisplayImageOptions
     */
    public static DisplayImageOptions loadImage(Context context, int roundCornerRadius, int defaultImageResId) {
        setImageLoaderCache(context);
        DisplayImageOptions.Builder builder = new DisplayImageOptions.Builder();
        builder.showImageOnLoading(defaultImageResId)// 设置图片在下载期间显示的图片
                .showImageForEmptyUri(defaultImageResId)// 设置图片URI为空或是错误的时候显示的图片
                .showImageOnFail(defaultImageResId)// 设置图片加载错误时显示的图片
                .cacheInMemory(true)// 设置下载的图片是否缓存在内存中
                .cacheOnDisc(true);// 设置下载的图片是否缓存在SD卡中
        if (roundCornerRadius > 0) {
            builder.displayer(new RoundedBitmapDisplayer(roundCornerRadius));
        }
        return builder.build();
    }


    /**
     * 加载图片
     *
     * @param context           Context
     * @param roundCornerRadius 圆角的半径(单位px)
     *                          如果为0，则无圆角
     * @return DisplayImageOptions
     */
    public static DisplayImageOptions loadImageWithCustomRoundCorner(Context context, int roundCornerRadius) {
        return loadImage(context, roundCornerRadius, R.mipmap.my_portrait);
    }


    /**
     * 加载图片
     *
     * @param context           Context
     * @param defaultImageResId 加载出错时显示的图片
     * @return DisplayImageOptions
     */
    public static DisplayImageOptions loadImageWithCustomImage(Context context, int defaultImageResId) {
        return loadImage(context, 8, defaultImageResId);
    }
}